In many computer applications it is necessary to perform certain calculations many times. Since computers carry out these calculations as functions, the speed with which these functions can be completed becomes very important to the overall system performance. For example, financial applications often require the calculation of the exponentiation function and their performance often relies critically on the performance of the exponentiation calculation. In finance, slower calculations can result in algorithms that suggest trades after the market is no longer well suited for such trades.
Transcendental functions require complex calculations because they cannot be calculated exactly using only addition, subtraction, multiplication, and division. Instead of performing a complex calculation, it is possible to simply lookup the input value in a table, where each table entry has been pre-calculated to hold the correct output value for the given input. While this method works for inputs that require relatively few bits, such as a 16-bit input, since only a few values need to be stored, in the case of 32-bit inputs, the table must hold over 4-billion entries, which is costly to store and access in efficient memory. In the case of 64-bit inputs, or two 64-bit inputs, the tables would be extremely large and would not fit in a practical memory.
Accordingly, it is desirable to carry out the exponentiation function, which raises the natural number “e” (a constant defined by nature, similar to pi approximated by 2.71828 . . . ) to the power of x in multiple calculations. It is further desirable to reduce the memory requirements that would typically be needed to carry out the exponentiation function with multiple lookups.